package com.rykj.qxj.server.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.rykj.qxj.server.common.ZmanagerBaseMapper;
import com.rykj.qxj.server.model.entity.ApiManage;
import com.rykj.qxj.server.model.entity.ApiVersionManage;
import com.rykj.qxj.server.model.entity.Apply;

public interface ApiManageMapper extends ZmanagerBaseMapper<ApiManage> {
	
	int saveApiManage(ApiManage ApiManage);
	/**
	 * 
	 * @Description: 根据条件查询列表  
	 * @param:   查询条件的map   
	 * @date:   2019年3月14日 上午10:08:05  
	 * @author: wangshunyi    
	 * @throws
	 */
	List<ApiManage> selectListBySearchParams(@Param("s") Map<String, Object> params);
	
	/**
	 * 
	 * @Description: 根据条件查询记录数   
	 * @param:  查询条件map    
	 * @date:   2019年3月14日 上午10:09:11  
	 * @author: wangshunyi    
	 * @throws
	 */
	Integer selectCountBySearchParams(@Param("s") Map<String, Object> params);
	/**
	 * 
	 * @Description:根据请求的url在接口管理中查询接口   
	 * @param:请求的url      
	 * @date:   2019年3月19日 下午4:48:40  
	 * @author: wangshunyi    
	 * @throws
	 */
	ApiManage selectApiManageAndApiversionIdByApiIdAndVersionStatusAndVerifyStatusAndDeleteStatus(String url);
	/**
	 * 
	 * @Description:根据接口的Id查询接口详情
	 * @param: id 接口的id
	 * @date:   2019年3月20日 下午5:39:01  
	 * @author: wangshunyi    
	 * @throws
	 */
	ApiManage getApiManageDetails(Integer id);
	/**
	 * 
	 * @Description: 查询审核通过的接口列表
	 * @param:      
	 * @return:  
	 * @date:   2019年3月23日 下午4:07:46  
	 * @author: wangshunyi    
	 * @throws
	 */
	List<ApiManage> selectVerifyPassApiManagePageBySearchParams(@Param("s") Map<String, Object> params);

	List<Map<String,Object>> findAllApplyAndApi();
	/**
	 * @Description:查询未审核的接口列表   
	 * @param:      
	 * @return:  
	 * @date:   2019年3月25日 下午6:15:16  
	 * @author: wangshunyi    
	 * @throws
	 */
	List<ApiManage> selectVerifyApiManagePageBySearchParams(@Param("s")Map<String,Object> params);
	/**
	 * 
	 * @Description: 根据id查询信息  
	 * @date:   2019年3月28日 下午2:45:41  
	 * @author: wangshunyi    
	 * @throws
	 */
	ApiManage selectApiManageByPrimaryKey(Integer id);
	
	/**
	 * 
	 * @Description: 根据接口的id查询绑定的应用列表
	 * @date:   2019年4月1日 下午6:49:40  
	 * @author: wangshunyi    
	 * @throws
	 */
	List<Apply> selectApplyListByApiId(Integer apiId); 
	/**
	 * 
	 * @Description: 根据url查询接口对象   
	 * @date:   2019年4月2日 下午6:36:09  
	 * @author: wangshunyi    
	 * @throws
	 */
	ApiManage validateApiUrl(String url);
	/**
	 * 
	 * @Description:门户查询数据接口的列表
	 * @date:   2019年4月16日 上午11:59:18  
	 * @author: wangshunyi    
	 * @throws
	 */
	List<ApiVersionManage> selectDataApiShowList(@Param("s")Map<String, Object> paramMap);
	/**
	 * 
	 * @Description: 根据请求在数据库中存储的url查询  
	 * @param:url      
	 * @date:   2019年5月21日 上午11:56:18  
	 * @author: wangshunyi    
	 * @throws
	 */
	ApiManage selectApiManageByUrl(String url);
	/**
	 * 
	 * @Description: 根据接口的地址和接口版本的状态查询   
	 * @date:   2019年5月21日 下午2:33:46  
	 * @author: wangshunyi    
	 * @throws
	 */
	ApiManage selectApiManageAndApiversionByUrlAndEnable(String requestURI);
	
	Map<String,Object> apiTotal();

	List<ApiManage> getApiByTableId(@Param("tableId") Integer tableId);

    Integer selectDataApiShowListCount(@Param("s")Map<String, Object> paramMap);
    
    
	List<ApiManage> searchApiListByName(@Param("s")Map<String,Object> paramMap);

    List<Map<String, String>> getAppKeyApiUrls();

	List<ApiManage> getApiInfoByIds(@Param("apiId") String[] apiId);

	List<Map<String, Object>> getApiVersionByTableId(@Param("tableId") Integer tableId);
}
